import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {HttpClientModule} from '@angular/common/http';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {NzLayoutModule} from 'ng-zorro-antd/layout';
import {NzMenuModule} from 'ng-zorro-antd/menu';
import {NzButtonModule} from 'ng-zorro-antd/button';
import {NzModalModule} from 'ng-zorro-antd/modal';
import {NzDividerModule} from 'ng-zorro-antd/divider';
import {NzMessageModule} from 'ng-zorro-antd/message';
import {NzNotificationModule} from 'ng-zorro-antd/notification';
import {NzPopconfirmModule} from 'ng-zorro-antd/popconfirm';
import {NzDropDownModule} from 'ng-zorro-antd/dropdown';
import {NzDrawerModule} from 'ng-zorro-antd/drawer';

const THIRD_MODULES = [
  FormsModule,
  ReactiveFormsModule,
  HttpClientModule,
];
const NG_ZORRO_MODULES = [
  NzLayoutModule,
  NzMenuModule,
  NzButtonModule,
  NzModalModule,
  NzDividerModule,
  NzMessageModule,
  NzNotificationModule,
  NzPopconfirmModule,
  NzDropDownModule,
  NzDrawerModule,
];
const COMPONENTS = [];
const DIRECTIVES = [];
const PIPES = [];

@NgModule({
  declarations: [
    ...PIPES,
    ...COMPONENTS,
    ...DIRECTIVES,
  ],
  imports: [
    CommonModule,
    ...THIRD_MODULES,
    ...NG_ZORRO_MODULES,
  ],
  exports: [
    ...THIRD_MODULES,
    ...NG_ZORRO_MODULES,
    ...PIPES,
    ...COMPONENTS,
    ...DIRECTIVES,
  ]
})
export class SharedModule {
}
